package com.xg.util.export;

import org.apache.poi.ss.usermodel.IndexedColors;

/**
 * 样式策略工厂类
 * 负责根据操作类型创建对应的样式策略实例
 * 封装了策略的创建逻辑，使调用方无需直接依赖具体策略类
 */
public class StyleStrategyFactory {

    /**
     * 根据操作类型获取对应的样式策略
     * @param operationType 操作类型（insert/delete/update）
     * @param colIndex 当前单元格列索引（仅update时需要）
     * @param modifiedColIndex 被修改字段的列索引（仅update时需要）
     * @return 对应的CellStyleStrategy实例
     */
    public static CellStyleStrategy getStrategy(String operationType, int colIndex, int modifiedColIndex) {
        switch (operationType) {
            case "insert":
                // 新增操作：返回浅绿色样式策略
                return new InsertStyleStrategy();
            case "delete":
                // 删除操作：返回金色样式策略
                return new DeleteStyleStrategy();
            case "update":
                // 修改操作：返回天蓝色样式策略（仅标记修改列）
                return new UpdateStyleStrategy(colIndex, modifiedColIndex);
            default:
                // 默认策略：白色背景（无特殊样式）
                return style -> style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
        }
    }
}